package abs.web.jsf;

import abs.dao.CompaniasDAO;
import abs.dao.GrupoProveedoresDAO;
import abs.dao.ProveedoresDAO;
import abs.dao.TipoProveedoresDAO;

import abs.domain.Companias;
import abs.domain.GrupoProveedores;
import abs.domain.Proveedores;
import abs.domain.TipoProveedores;

import abs.service.ProveedoresService;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Scope;

import org.springframework.stereotype.Component;

import org.springframework.transaction.annotation.Transactional;

/**
 * Spring Component that handles CRUD requests for Proveedores entities
 * 
 */
@Scope("session")
@Component("ProveedoresComponent")
public class ProveedoresComponentImpl implements ProveedoresComponent {

	/**
	 * Data type variable that provides CRUD operations for Proveedores entities
	 * 
	 */
	private Proveedores proveedores;

	/**
	 * DAO injected by Spring that manages TipoProveedores entities
	 * 
	 */
	private TipoProveedores tipoproveedores;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	private Companias companias;

	/**
	 * DAO injected by Spring that manages GrupoProveedores entities
	 * 
	 */
	private GrupoProveedores grupoproveedores;

	/**
	 * DAO injected by Spring that manages Companias entities
	 * 
	 */
	@Autowired
	private CompaniasDAO companiasDAO;

	/**
	 * DAO injected by Spring that manages GrupoProveedores entities
	 * 
	 */
	@Autowired
	private GrupoProveedoresDAO grupoProveedoresDAO;

	/**
	 * DAO injected by Spring that manages Proveedores entities
	 * 
	 */
	@Autowired
	private ProveedoresDAO proveedoresDAO;

	/**
	 * DAO injected by Spring that manages TipoProveedores entities
	 * 
	 */
	@Autowired
	private TipoProveedoresDAO tipoProveedoresDAO;

	/**
	 * Service injected by Spring that provides CRUD operations for Proveedores entities
	 * 
	 */
	@Autowired
	private ProveedoresService proveedoresService;

	/** 
	 */
	public ProveedoresComponentImpl() {
	}

	/**
	 * Select an existing Proveedores entity
	 * 
	 */
	@Transactional
	public String selectProveedores(Integer pr100coprKey) {
		proveedores = proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Show all Proveedores entities
	 * 
	 */
	@Transactional
	public List<Proveedores> listProveedoress() {
		return new java.util.ArrayList<Proveedores>(proveedoresService.loadProveedoress());
	}

	/**
	 * Select the child TipoProveedores entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteProveedoresTipoProveedores(Integer proveedores_pr100copr, String related_tipoproveedores_tipopr100cdgo) {
		tipoproveedores = tipoProveedoresDAO.findTipoProveedoresByPrimaryKey(related_tipoproveedores_tipopr100cdgo);

		return "/jsf/proveedores/tipoproveedores/deleteTipoProveedores.xhtml";
	}

	/**
	 * Get TipoProveedores entity by Proveedores
	 * 
	 */
	@Transactional
	public TipoProveedores getProveedoresTipoProveedores(Integer pr100coprKey) {
		return proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey).getTipoProveedores();
	}

	/**
	 * Getter for variable Proveedores
	 * 
	 */
	@Transactional
	public Companias getCompanias() {
		return companias;
	}

	/**
	 * Delete an existing GrupoProveedores entity
	 * 
	 */
	@Transactional
	public String deleteProveedoresGrupoProveedores(Integer proveedores_pr100copr, String related_grupoproveedores_grppr100cdgo) {
		proveedores = proveedoresService.deleteProveedoresGrupoProveedores(proveedores_pr100copr, related_grupoproveedores_grppr100cdgo);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Create a new Companias entity
	 * 
	 */
	@Transactional
	public String newProveedoresCompanias(Integer proveedores_pr100copr) {
		companias = new Companias();

		return "/jsf/proveedores/companias/createCompanias.xhtml";
	}

	/**
	 * Getter for variable Proveedores
	 * 
	 */
	@Transactional
	public TipoProveedores getTipoproveedores() {
		return tipoproveedores;
	}

	/**
	 * Save an existing Proveedores entity
	 * 
	 */
	@Transactional
	public String saveProveedores(Proveedores proveedores) {
		proveedoresService.saveProveedores(proveedores);
		return "/jsf/proveedores/listProveedoress.xhtml";
	}

	/**
	 * Save an existing Companias entity
	 * 
	 */
	@Transactional
	public String saveProveedoresCompanias(Integer proveedores_pr100copr, Companias companias) {
		proveedores = proveedoresService.saveProveedoresCompanias(proveedores_pr100copr, companias);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Delete an existing Companias entity
	 * 
	 */
	@Transactional
	public String deleteProveedoresCompanias(Integer proveedores_pr100copr, String related_companias_co000nocia) {
		proveedores = proveedoresService.deleteProveedoresCompanias(proveedores_pr100copr, related_companias_co000nocia);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Create a new Proveedores entity
	 * 
	 */
	@Transactional
	public String newProveedores() {
		proveedores = new Proveedores();

		return "/jsf/proveedores/createProveedores.xhtml";
	}

	/**
	 * Select the child Companias entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteProveedoresCompanias(Integer proveedores_pr100copr, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia);

		return "/jsf/proveedores/companias/deleteCompanias.xhtml";
	}

	/**
	 * Edit an existing TipoProveedores entity
	 * 
	 */
	@Transactional
	public String editProveedoresTipoProveedores(Integer proveedores_pr100copr, String related_tipoproveedores_tipopr100cdgo) {
		tipoproveedores = tipoProveedoresDAO.findTipoProveedoresByPrimaryKey(related_tipoproveedores_tipopr100cdgo, -1, -1);
		return "/jsf/proveedores/tipoproveedores/editTipoProveedores.xhtml";
	}

	/**
	 * Save an existing GrupoProveedores entity
	 * 
	 */
	@Transactional
	public String saveProveedoresGrupoProveedores(Integer proveedores_pr100copr, GrupoProveedores grupoproveedores) {
		proveedores = proveedoresService.saveProveedoresGrupoProveedores(proveedores_pr100copr, grupoproveedores);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Edit an existing Proveedores entity
	 * 
	 */
	@Transactional
	public String editProveedores(Integer pr100coprKey) {
		proveedores = proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey);

		return "/jsf/proveedores/editProveedores.xhtml";
	}

	/**
	 * Save an existing TipoProveedores entity
	 * 
	 */
	@Transactional
	public String saveProveedoresTipoProveedores(Integer proveedores_pr100copr, TipoProveedores tipoproveedores) {
		proveedores = proveedoresService.saveProveedoresTipoProveedores(proveedores_pr100copr, tipoproveedores);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * Getter for variable Proveedores
	 * 
	 */
	@Transactional
	public GrupoProveedores getGrupoproveedores() {
		return grupoproveedores;
	}

	/**
	 * Select the Proveedores entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteProveedores(Integer pr100coprKey) {
		proveedores = proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey);

		return "/jsf/proveedores/deleteProveedores.xhtml";
	}

	/**
	 * Delete an existing Proveedores entity
	 * 
	 */
	@Transactional
	public String deleteProveedores(Integer pr100coprKey) {
		Proveedores proveedores = proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey);
		proveedoresService.deleteProveedores(proveedores);
		return "/jsf/proveedores/listProveedoress.xhtml";
	}

	/**
	 * Create a new TipoProveedores entity
	 * 
	 */
	@Transactional
	public String newProveedoresTipoProveedores(Integer proveedores_pr100copr) {
		tipoproveedores = new TipoProveedores();

		return "/jsf/proveedores/tipoproveedores/createTipoProveedores.xhtml";
	}

	/**
	 * Create a new GrupoProveedores entity
	 * 
	 */
	@Transactional
	public String newProveedoresGrupoProveedores(Integer proveedores_pr100copr) {
		grupoproveedores = new GrupoProveedores();

		return "/jsf/proveedores/grupoproveedores/createGrupoProveedores.xhtml";
	}

	/**
	 * Select the child GrupoProveedores entity for display allowing the user to confirm that they would like to delete the entity
	 * 
	 */
	@Transactional
	public String confirmDeleteProveedoresGrupoProveedores(Integer proveedores_pr100copr, String related_grupoproveedores_grppr100cdgo) {
		grupoproveedores = grupoProveedoresDAO.findGrupoProveedoresByPrimaryKey(related_grupoproveedores_grppr100cdgo);

		return "/jsf/proveedores/grupoproveedores/deleteGrupoProveedores.xhtml";
	}

	/**
	 * Get GrupoProveedores entity by Proveedores
	 * 
	 */
	@Transactional
	public GrupoProveedores getProveedoresGrupoProveedores(Integer pr100coprKey) {
		return proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey).getGrupoProveedores();
	}

	/**
	 * View an existing GrupoProveedores entity
	 * 
	 */
	@Transactional
	public String selectProveedoresGrupoProveedores(Integer proveedores_pr100copr, String related_grupoproveedores_grppr100cdgo) {
		grupoproveedores = grupoProveedoresDAO.findGrupoProveedoresByPrimaryKey(related_grupoproveedores_grppr100cdgo, -1, -1);
		return "/jsf/proveedores/grupoproveedores/viewGrupoProveedores.xhtml";
	}

	/**
	 * View an existing Companias entity
	 * 
	 */
	@Transactional
	public String selectProveedoresCompanias(Integer proveedores_pr100copr, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/proveedores/companias/viewCompanias.xhtml";
	}

	/**
	 * Delete an existing TipoProveedores entity
	 * 
	 */
	@Transactional
	public String deleteProveedoresTipoProveedores(Integer proveedores_pr100copr, String related_tipoproveedores_tipopr100cdgo) {
		proveedores = proveedoresService.deleteProveedoresTipoProveedores(proveedores_pr100copr, related_tipoproveedores_tipopr100cdgo);

		return "/jsf/proveedores/viewProveedores.xhtml";
	}

	/**
	 * View an existing TipoProveedores entity
	 * 
	 */
	@Transactional
	public String selectProveedoresTipoProveedores(Integer proveedores_pr100copr, String related_tipoproveedores_tipopr100cdgo) {
		tipoproveedores = tipoProveedoresDAO.findTipoProveedoresByPrimaryKey(related_tipoproveedores_tipopr100cdgo, -1, -1);
		return "/jsf/proveedores/tipoproveedores/viewTipoProveedores.xhtml";
	}

	/**
	 * Get Companias entity by Proveedores
	 * 
	 */
	@Transactional
	public Companias getProveedoresCompanias(Integer pr100coprKey) {
		return proveedoresDAO.findProveedoresByPrimaryKey(pr100coprKey).getCompanias();
	}

	/**
	 * Getter for variable Proveedores
	 * 
	 */
	@Transactional
	public Proveedores getProveedores() {
		return proveedores;
	}

	/**
	 * Edit an existing Companias entity
	 * 
	 */
	@Transactional
	public String editProveedoresCompanias(Integer proveedores_pr100copr, String related_companias_co000nocia) {
		companias = companiasDAO.findCompaniasByPrimaryKey(related_companias_co000nocia, -1, -1);
		return "/jsf/proveedores/companias/editCompanias.xhtml";
	}

	/**
	 * Edit an existing GrupoProveedores entity
	 * 
	 */
	@Transactional
	public String editProveedoresGrupoProveedores(Integer proveedores_pr100copr, String related_grupoproveedores_grppr100cdgo) {
		grupoproveedores = grupoProveedoresDAO.findGrupoProveedoresByPrimaryKey(related_grupoproveedores_grppr100cdgo, -1, -1);
		return "/jsf/proveedores/grupoproveedores/editGrupoProveedores.xhtml";
	}

}
